package com.iecm.tcp.api;

import com.alibaba.fastjson.JSONObject;
import com.iecm.common.config.RabbitConfig;
import com.iecm.common.config.TcpGlobal;
import com.iecm.common.config.UdpGlobal;
import com.iecm.common.utils.RabbitUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;

import java.util.Date;

/**
 * tcp服务调用第三方接口类
 */
@Slf4j
@Component
public class TcpServerApi {

    @Autowired
    private RabbitUtil rabbitUtil;

    @Autowired
    private RabbitConfig rabbitConfig;

    /**
     * 保存热表数据
     * @param meterDatas
     * @param createTime
     */
    public void writeToMeter(String meterDatas, Date createTime){
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("meterDatas", meterDatas);
        jsonObject.put("createTime", createTime);

        rabbitUtil.writeToServer(rabbitConfig.meterQueue().getName(), jsonObject);
    }

    /**
     * 保存阀门数据
     * @param datas
     * @param createTime
     */
    public void writeToValve(String datas, Date createTime,String clientId){
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("datas", datas);
        jsonObject.put("createTime", createTime);
        jsonObject.put("clientId", clientId);

        rabbitUtil.writeToServer(rabbitConfig.valveQueue().getName(), jsonObject);
    }

    /**
     * 保存单元阀数据
     * @param datas
     * @param createTime
     */
    public void writeToUnitValve(String datas, Date createTime){
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("datas", datas);
        jsonObject.put("createTime", createTime);

        rabbitUtil.writeToServer(rabbitConfig.unitValveQueue().getName(), jsonObject);
    }

    /**
     * 保存采集器数据
     * @param datas
     * @param type
     */
    public void writeToCollector(String datas, int type){
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("datas",datas);
        jsonObject.put("type",type);

        rabbitUtil.writeToServer(rabbitConfig.collectorQueue().getName(), jsonObject);
    }

    /**
     * 保存采集器在线状态
     * @param collectorId
     * @param onlineStatus
     */
    public void writeToCollectorOnline(String collectorId, String onlineStatus){
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("collectorId",collectorId);
        jsonObject.put("onlineStatus",onlineStatus);

        rabbitUtil.writeToServer(rabbitConfig.collectorOnlineQueue().getName(), jsonObject);
    }

    /**
     * 保存采集错误数据
     * @param eqId
     * @param locationId
     * @param eqType
     * @param alarmType
     * @param alarmMethod
     * @param alarmMsg
     */
    public void writeToAlarm(String eqId,String locationId, String eqType, String alarmType, String alarmMethod, String alarmMsg){
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("eqId", eqId);
        jsonObject.put("locationId", locationId);
        jsonObject.put("eqType", eqType);
        jsonObject.put("alarmType", alarmType);
        jsonObject.put("alarmMethod", alarmMethod);
        jsonObject.put("alarmMsg", alarmMsg);

        rabbitUtil.writeToServer(rabbitConfig.errorQueue().getName(), jsonObject);
    }
}
